<?php

/*
 * +----------------------------------------------------------------------
 * 作 者: xinglou <xinglou1@foxmail.com>
 * +----------------------------------------------------------------------
 * 创建日期：2015-06-24
 * ------------------------------------------------------------------------
 * 文件描述：公共方法，主要负责登录
 * ------------------------------------------------------------------------
 * 升级记录：
 * ------------------------------------------------------------------------
 */
class PublicAction extends Action
{

    /**
     * 用户登录页面
     */
    public function login()
    {
        $this->display();
    }
    /**
     * 用户登录检测
     */
    public function check_login()
    {
        $data = $this->checkLogin($this->_request('name'), $this->_request('pwd'), $this->_request('verify_code'), $msg);
        if (false !== $data) {
            redirect(__APP__ . '?g=Admin&m=Index&a=index');
        } else {
            $this->error($msg);
        }
    }

    /**
     * 后台管理用户登出
     */
    public function admin_logout()
    {
        $this->logout();
        $this->success('退出成功！', C('ROOT_URL'));
    }

    /**
     * 用户登录检测（供其他模块调用）
     * 
     * @param string $username            
     * @param string $password            
     * @param string $verify            
     * @param string $msg            
     * @return boolean
     */
    public function checkLogin($username, $password, $verify, $msg)
    {
        // 输入项不能为空
        if (empty($username)) {
            $msg = '用户名不能为空！';
            return false;
        } elseif (empty($password)) {
            $msg = '密码不能为空！';
            return false;
        } /*
           * elseif(empty($verify)) {
           * $msg = '验证码不能为空！';
           * return false;
           * }
           */
        // 验证码检查
        if ($_SESSION['verify'] != md5($verify)) {
            // $msg = '验证码错误！';
            // return false;
        }
        
        // 用户名密码检测
        $model = new UserModel();
        $data = $model->field("id,
							   name,
							   real_name,
							   type,
							   area_code,
							   img,
							   status")
            ->where("name = '" . $username . "'
					  	   and pwd = '" . md5($password) . "'")
            ->find();
        if (! empty($data)) {
            if ($data['status'] == 'b') {
                $msg = '对不起，您的账号已停用，详情请与管理员联系！';
                return false;
            }
            
            // 将用户登录信息写入session
            cookie('userid', $data['id']);
            cookie('user_name', $data['name']);
            cookie('user_real_name', $data['real_name']);
            cookie('type', $data['type']);
            cookie('area_code', $data['area_code']);
            cookie('user_img', $data['img']);
            redirect(__APP__ . '?g=Admin&m=Index&a=index'); // 写入登录信息，然后跳转到首页
                                                              // $this->success('登录成功！', __APP__.'?g=Admin&m=Index&a=index');
        } else {
            $msg = '用户名或密码错误！';
            return false;
        }
    }

    /**
     * 用户注销登录（多个地方调用）
     * 
     * @param string $url
     *            跳转地址
     */
    public function logout()
    {
        cookie('userid', null);
        cookie('user_name', null);
        cookie('user_real_name', null);
        cookie('user_img', null);
    }

    /**
     * 修改密码
     */
    public function change_pwd()
    {
        // 查询用户基本信息
        $data = get_admin_info();
        $this->assign('login_user_info', $data);
        $this->display();
    }

    /**
     * 更新修改的密码信息至数据库
     */
    public function update_pwd()
    {
        $model = new UserModel();
        $pwds = $model->where("id = '" . $this->_request('id') . "'")
            ->getField('pwd');
        $password = $this->_request('pwd');
        $verify = $this->_request('verify_code');
        if (empty($password)) {
            $this->error('密码不能为空！');
        }  /*
           * elseif ($_SESSION['verify'] != md5($verify)) {
           * $this->error('验证码错误！');
           * }
           */
else {
            $pwd = md5($this->_request('pwd'));
            if ($pwd === $pwds) {
                $data['id'] = $this->_request('id');
                $data['pwd'] = md5($this->_request('pwd1'));
                if (false !== $model->save($data)) {
                    $this->success('密码修改成功！');
                    $this->logout(); // 退出后重新登录
                } else {
                    $this->error('密码修改失败！');
                }
            } else {
                $this->error('旧密码输入错误！');
            }
        }
    }

    /**
     * 生成验证码
     */
    public function verify()
    {
        header("Content-type: text/html; charset=utf-8");
        import("ORG.Util.Image");
        Image::buildImageVerify(4, 1, 'png', 130, 40);
    }

    /**
     * 省市县联动时返回市州列表
     */
    public function get_city()
    {
        $data = get_city_list($_REQUEST['province_code']);
        if (! empty($data)) {
            $this->ajaxReturn($data, "查询成功", 1);
        } else {
            $this->ajaxReturn(null, "没有找到对应的字段" . $_REQUEST['province_code'], 0);
        }
    }

    /**
     * 省市县联动时返回县区列表
     */
    public function get_area()
    {
        $data = get_area_list($_REQUEST['city_code']);
        if (! empty($data)) {
            $this->ajaxReturn($data, "查询成功", 1);
        } else {
            $this->ajaxReturn(null, "没有找到对应的字段", 0);
        }
    }

    /**
     * 省市县联动时返回学校列表
     */
    public function get_school()
    {
        $data = get_school_list($_REQUEST['area_code']);
        if (! empty($data)) {
            $this->ajaxReturn($data, "查询成功", 1);
        } else {
            $this->ajaxReturn(null, "没有找到对应的学校", 0);
        }
    }
    
    /**
     * 获取专业
     */
    public function get_speciality()
    {
    	$data = get_speciality_list($_REQUEST['college']);
    	if (! empty($data)) {
    		$this->ajaxReturn($data, "查询成功", 1);
    	} else {
    		$this->ajaxReturn(null, "没有找到对应的专业", 0);
    	}
    }
    
    /**
     * 获取教师
     */
    public function get_teacher()
    {
    	$data = get_teacher_list($_REQUEST['school'],$_REQUEST['college'],$_REQUEST['speciality']);
    	if (! empty($data)) {
    		$this->ajaxReturn($data, "查询成功", 1);
    	} else {
    		$this->ajaxReturn(null, "没有找到对应的教师", 0);
    	}
    }
    public function get_teachers()
    {
    	$data = get_teachers_list($_REQUEST['college']);
    	if (! empty($data)) {
    		$this->ajaxReturn($data, "查询成功", 1);
    	} else {
    		$this->ajaxReturn(null, "没有找到对应的教师", 0);
    	}
    }
    /**
     * 获取学科列表
     */
    public function get_subject()
    {
        $data = get_subject_list($_REQUEST['phase']);
        if (! empty($data)) {
            $this->ajaxReturn($data, "查询成功", 1);
        } else {
            $this->ajaxReturn(null, "没有找到对应的字段" . $_REQUEST['phase'], 0);
        }
    }
}
?>